package com.eshop.modules.order.service;

import com.eshop.modules.order.service.dto.OrderTimeDataDto;
import com.eshop.modules.order.service.dto.OrderCountDto;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.eshop.modules.order.service.dto.StoreOrderDto;
import org.springframework.data.domain.Pageable;
import com.eshop.modules.order.service.dto.StoreOrderQueryCriteria;
import com.eshop.modules.order.vo.ComputeVo;
import com.eshop.modules.order.param.OrderParam;
import com.eshop.modules.order.vo.UserOrderCountVo;
import java.util.Map;
import com.eshop.modules.order.vo.StoreOrderQueryVo;
import com.eshop.modules.order.vo.ShoperOrderTimeDataVo;
import com.eshop.modules.order.vo.OrderDataVo;
import java.util.List;
import java.math.BigDecimal;
import com.eshop.modules.order.vo.ConfirmOrderVo;
import com.eshop.modules.user.domain.ShopUser;
import com.eshop.modules.order.domain.StoreOrder;
import com.eshop.common.service.BaseService;

public interface StoreOrderService extends BaseService<StoreOrder>
{
    void orderComment(final ShopUser user, final String unique, final String comment, final String pics, final String productScore, final String serviceScore);
    
    ConfirmOrderVo confirmOrder(final ShopUser shopUser, final String cartIds);
    
    void orderRefund(final String orderId, final BigDecimal price, final Integer type);
    
    void orderDelivery(final String orderId, final String deliveryId, final String deliveryName, final String deliveryType);
    
    void updateDelivery(final String orderId, final String deliveryId, final String deliveryName, final String deliveryType);
    
    void editOrderPrice(final String orderId, final String price);
    
    List<OrderDataVo> getOrderDataPriceCount(final int page, final int limit);
    
    ShoperOrderTimeDataVo getShoperOrderTimeData();
    
    StoreOrder getOrderPink(final Long pid, final Long uid);
    
    void cancelOrder(final String orderId, final Long uid);
    
    void orderApplyRefund(final String explain, final String Img, final String text, final String orderId, final Long uid);
    
    void removeOrder(final String orderId, final Long uid);
    
    void takeOrder(final String orderId, final Long uid);
    
    StoreOrderQueryVo verifyOrder(final String verifyCode, final Integer isConfirm, final Long uid);
    
    List<StoreOrderQueryVo> orderList(final Long uid, final int type, final int page, final int limit);
    
    Map<String, Object> orderListByPage(final Long uid, final int type, final int page, final int limit);
    
    UserOrderCountVo orderData(final Long uid);
    
    StoreOrderQueryVo handleOrder(final StoreOrderQueryVo order);
    
    void paySuccess(final String orderId, final String payType);
    
    void yuePay(final String orderId, final Long uid);
    
    void integralPay(final String orderId, final Long uid);
    
    String aliPay(final String orderId) throws Exception;
    
    StoreOrder createOrder(final ShopUser userInfo, final String key, final OrderParam param);
    
    ComputeVo computedOrder(final ShopUser userInfo, final String key, final String couponId, final String useIntegral, final String shippingType, final String addressId);
    
    StoreOrderQueryVo getOrderInfo(final String unique, final Long uid);
    
    Map<String, Object> queryAll(final StoreOrderQueryCriteria criteria, final Pageable pageable);
    
    List<StoreOrder> queryAll(final StoreOrderQueryCriteria criteria);
    
    void update(final StoreOrder resources);
    
    void download(final List<StoreOrderDto> all, final HttpServletResponse response) throws IOException;
    
    StoreOrderDto getOrderDetail(final Long orderId);
    
    Map<String, Object> queryAll(final List<String> ids);
    
    OrderCountDto getOrderCount();
    
    OrderTimeDataDto getOrderTimeData();
    
    Map<String, Object> chartCount();
    
    void retrunStock(final String orderId);
}
